﻿/*
 * Created by SharpDevelop.
 * User: Miguel
 * Date: 08/10/2011
 * Time: 02:28 p.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Windows.Forms;

namespace Business_Entity
{
	/// <summary>
	/// Description of BELineaPedidoProducto.
	/// </summary>
	public class BELineaPedidoProducto : BELineaPedidoVenta
	{
		
		private int id;
		private int cantidad;
		private double precioUnitario;
		private BEProducto producto;
		private BEDescuento descuento;
		
		public BELineaPedidoProducto(int cantidad, double precioUnitario, BEProducto producto)
		{	
			this.cantidad = cantidad;
			this.precioUnitario = precioUnitario;
			this.producto = producto;
			this.descuento = null;
		}
				
		public int Cantidad{
			get{return this.cantidad;}
			set{this.cantidad = value;}
		}
		
		public double PrecioUnitario{
			get{return this.precioUnitario;}
			set{this.precioUnitario = value;}
		}
		
		public BEProducto Producto{
			get{return this.producto;}
			set{this.producto = value;}
		}
		
		public BEDescuento Descuento{
			get{return this.descuento;}
			set{this.descuento = value;}
		}
		
		public double MontoDescuento{
			get{
				if (descuento == null) return 0;
				
				int cantidadVale = this.CantidadDescuento;
				
				return Math.Round( (cantidadVale*this.precioUnitario*(this.Descuento.Descuento)/100) , 2);
			}
		}
		
		public double PrecioTotal{
			get{return Math.Round(this.PrecioUnitario*this.cantidad - MontoDescuento, 2);}
		}
		
		public double PrecioTotalSinDescuento{
			get{return this.precioUnitario*cantidad;}
		}
		
		public int Id{
			get{return this.id;}
			set{this.id = value;}
		}
		
		public int CantidadDescuento{
			get{
				
				if (descuento == null) return 0;
				
				int cantidadVale;
				
				if (this.Descuento.CantidadMaxima != -1){
					cantidadVale = descuento.CantidadMaxima;
					if (this.cantidad < cantidadVale){
						cantidadVale = this.cantidad;
					}
				}else{
					cantidadVale = this.cantidad;
				}
				
				return cantidadVale;
			}
		}
	}
}
